設置完觸發器已經可以在前端消息中報警,但這並不方便,若沒有登入Zabbix或人不在位置上,就無法實時得到告警信息。
使用郵件告警來加強提醒效果,通常設置郵件告警有兩種方式,一種是Zabbix內建的郵件模板,另一種是自己寫python或sh腳本來實現。下面介紹的是第二種方法:利用python發信告警。
1. Python腳本
Zabbix可結合腳本告警,而用Python發信非常方便,只要是Linux系統通常都有內置Python,其中CentOS的yum工具就是用Python2所寫,如果要安裝Python3要留意避免版本衝突問題。
低安全性
要使用Gmail的話,需先至低安全性應用程式網頁中開放存取權限,否則會無法發送成功。
腳本路經
默認路徑:/usr/local/share/zabbix/alertscripts
也可以透過設定檔查看更改成其他路徑:/usr/local/etc/zabbix_server.conf
創建Python腳本
Python標準庫已內建SMTP模塊,不需安裝其他依賴,直接寫好腳本就可以發信。
創建一個Python腳本並命名為
zabbix-alert-smtp.py
。
1 | #!/bin/python |
小說明
輸入自己Gmail的帳密
1
2MAIL_ACCOUNT = 'your_account@gmail.com'
MAIL_PASSWORD = 'xxxx'
命令列參數
1
2
3
4
5
send_mail(recipient=sys.argv[1],subject=sys.argv[2],body=sys.argv[3])
sys.argv開頭的皆為命令列參數,後面會在補充與Zabbix的對應位置,方便理解為何此處要用命令列參數。
recipient 收件人
subject 主旨
body 內文
測試腳本
寄一封信給自己,主旨為”測試”,內文為”給自己”
1 | python zabbix-alert-smtp.py ceshizhanghu1001@gmail.com 測試 給自己 |
寄送成功
2. 設定報警媒介
報警媒介可以依類型”電子郵件”、”短信”、”腳本”等,待觸發器發報時一併報警。
创建媒体类型
選單:”管理” -> “報警媒介類型” -> “创建媒体类型”
腳本信息
名稱:Gmail
類型:“腳本”
腳本名稱:zabbix-alert-smtp.py
(
路經:/usr/local/share/zabbix/alertscripts,
權限:777
)
腳本參數:
{ALERT.SENDTO} 收件人地址
{ALERT.SUBJECT} 主題
{ALERT.MESSAGE} 詳細內容
以上輸入的三個腳本參數,也就對應著py腳本的命令列參數,權限需留意否則無法發送成功。
添加完成
3. 設定用戶報警媒介”收件人”
選擇用戶
選單:”管理” -> “用戶” -> “Admin”
添加報警媒介
選單:”報警媒介” -> “添加”
報警媒介信息
類型:Gmail
收件人:ceshizhanghu1001@gmail.com(測試)
收件人地址,實際上是與腳本參數“{ALERT.SENDTO}”對應的。
添加完成
確認信息後按更新完成添加。
4. 設定動作
選單:”配置” -> “動作” -> “創建動作”
動作信息
名稱:Nginx1
條件:触发器 = PingHost: Nginx1
操作信息
默認接收人:(不變)
默認信息:(不變)
操作細節:添加”用戶”及”報警媒介”
默認接收人及默認信息,實際上就是對應腳本參數“{ALERT.SUBJECT}”及“{ALERT.MESSAGE}”。若不希望接收訊息時都是全英文,那麼可以將非{}的文字改成中文,這樣並不會影響功能。
恢復操作信息
這部分與操作分頁設定相同,記得要添加操作細節(用戶及報警媒介)。
動作添加完成
5. 發信告警
由步驟”腳本”到”動作”設置完畢後,只要每當異常、恢復都會發信通知一次。
動作日誌
選單:”報表” -> “動作日誌”
Zabbix3.0以後新增的動作日誌功能非常好用,動作內容及是否成功通通都會顯示在這裡。
異常時通知
恢復時通知
小結
一開始接觸會認為步驟繁瑣了點,其實配置上都是圍繞著腳本參數所關聯的,明白其中相關關係,做出更多報警如:Telegram、Line、微信等都是沒有問題的。